#include <iostream>
#include <cstdlib>
#include <conio.h>
#include "figura.h"
#include "wieza.h"
#include "krol.h"
#include "pionek.h"


using namespace std;

Figura::Figura(int x, int y, EFiguraTyp typ)
{
    this->x=x;
    this->y=y;
    this->typ = typ;
}

void Figura::idz(int x, int y)
{
    prevx = this->x;
    prevy = this->y;
    this->x = x;
    this->y = y;
    if(this->getTyp() == WIEZA)
    {
        Wieza * tmp = (Wieza*) this;
        tmp->SetPrevCzyruch(tmp->GetCzyruch());
        tmp->SetCzyruch(1);
    }
    else if(this->getTyp() == KROL)
    {
        Krol * tmp = (Krol*) this;
        tmp->SetPrevCzyruch(tmp->GetCzyruch());
        tmp->SetCzyruch(1);
    }
    else if(this->getTyp() == PIONEK)
    {
        Pionek * tmp = (Pionek*) this;
        tmp->SetPrevCzyruch(tmp->GetCzyruch());
        tmp->SetCzyruch(1);
    }
}

void Figura::cofnijIdz()
{
   // idz(prevx, prevy);
    int tmpPrevx = this->x;
    int tmpPrevy = this->y;
    this->x = prevx;
    this->y = prevy;
    this->prevx = tmpPrevx;
    this->prevy = tmpPrevy;
    if(this->getTyp() == WIEZA)
    {
        Wieza * tmp = (Wieza*) this;
        tmp->SetCzyruch(tmp->GetPrevCzyruch());
    }
    else if(this->getTyp() == KROL)
    {
        Krol * tmp = (Krol*) this;
        tmp->SetCzyruch(tmp->GetPrevCzyruch());
    }
    else if(this->getTyp() == PIONEK)
    {
        Pionek * tmp = (Pionek*) this;
        tmp->SetCzyruch(tmp->GetPrevCzyruch());
    }
}

void Figura::bij(Figura *cel)
{
    cel->deaktywuj();
    idz(cel->GetX(), cel->GetY());
}

void Figura::cofnijBij(Figura *cel)
{
    cel->aktywuj();
    cofnijIdz();
}

void Figura::aktywuj()
{
    czyAktywna = true;
}

void Figura::deaktywuj()
{
    czyAktywna = false;
}

EFiguraTyp Figura::getTyp()
{
    return typ;
}

char Figura::GetGraf()
{
    return this->Graf;
}

int Figura::GetprevY()
{
    return this->prevy;
}
bool Figura::GetczyAktywna()
{
        return this->czyAktywna;
}


